package com.csp.mingyue.common.redis.handler;

import cn.hutool.core.util.StrUtil;
import org.redisson.api.NameMapper;

/**
 * Redis 缓存 Key 前缀处理
 *
 * @author Strive
 * @date 2023/8/30 16:40
 */
public class KeyPrefixHandler implements NameMapper {

	private final String keyPrefix;

	public KeyPrefixHandler(String keyPrefix) {
		// 前缀为空 则返回空前缀
		this.keyPrefix = StrUtil.isBlank(keyPrefix) ? "" : keyPrefix + ":";
	}

	/**
	 * 增加前缀
	 */
	@Override
	public String map(String name) {
		if (StrUtil.isBlank(name)) {
			return null;
		}
		if (StrUtil.isNotBlank(keyPrefix) && !name.startsWith(keyPrefix)) {
			return keyPrefix + name;
		}
		return name;
	}

	/**
	 * 去除前缀
	 */
	@Override
	public String unmap(String name) {
		if (StrUtil.isBlank(name)) {
			return null;
		}
		if (StrUtil.isNotBlank(keyPrefix) && name.startsWith(keyPrefix)) {
			return name.substring(keyPrefix.length());
		}
		return name;
	}

}
